package com.bootdo.wx.dao;

import com.bootdo.wx.domain.MemberUserDO;
import org.apache.ibatis.annotations.Mapper;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 用户,会员
 * @author chglee
 * @email 1992lcg@163.com
 * @date 2019-05-22 15:32:07
 */
@Mapper
public interface MemberUserDao {

	MemberUserDO get(String id);

	List<MemberUserDO> list(Map<String, Object> map);

	int count(Map<String, Object> map);

	int save(MemberUserDO memberUser);

	int update(MemberUserDO memberUser);

	int remove(String id);

	int batchRemove(String[] ids);

	int getFansNum(Map<String, Object> map);

	int getTeamNum(Map<String, Object> map);

	List<Map<String,Object>> getMyFans(Map<String, Object> map);


	MemberUserDO queryByOpenid(String openId);

	List<Map<String,Object>> getOrderEcharts(Map<String,Object> map);

	List<Map<String,Object>> allMoneyEcharts(Map<String,Object> map);

	List<Map<String,Object>> allUserEcharts(Map<String,Object> map);

	MemberUserDO getByCode(String code);

	List<Map<String,Object>> getMoneyListByUser(Map<String,Object> map);

	int getMoneyListByUserCount(Map<String, Object> map);

	List<Map<String,Object>> getMyFansH(Map<String,Object> map);

	int getMyFansHCount(Map<String, Object> map);

	BigDecimal getShoppingNum(Map<String,Object> map);

	List<Map<String,Object>> getShoppingList(Map<String,Object> map);

	int getShoppingListCount(Map<String, Object> map);

	int getZtChildrenNUm(Map<String, Object> map);

	/**
	 * @author long
	 * 2020年6月15日上午11:03:22
	 * 方法释义:
	 * 参数:
	 *
	 */
	MemberUserDO findByPhone(String phoneNumber);

    List<MemberUserDO> getByLevel(int level);

	List<MemberUserDO> getByLevelGt0();

	List<MemberUserDO> getByLevelGt(int i);

	/*	/**
	 * @author long
	 * 2020年9月8日下午8:02:00
	 * 方法释义:获取直推vip
	 * 参数:
	 *
	 *//*
	int getMyFansCountByVip(Map<String, Object> map);*/

	/**
	 * @author long
	 * 2020年9月8日下午9:25:02
	 * 方法释义:获取团队等级大于等于vip人数
	 * 参数:
	 *
	 */
	int getMyFansCountGtVip(Map<String, Object> map);

	/**
	 * @author long
	 * 2020年9月10日下午7:30:46
	 * 方法释义:获取普通用户上级
	 * 参数: level 查询哪个等级等级 -1vip -2店长  1总监	2总代
	 * userId 用户id
	 * upLevel 查询第几个 第一个传1 只会返回一个,2个就传2,所有就传空
	 *
	 */
	List<MemberUserDO> getMyUpVip(Map<String, Object> map);

	/**
	 * @author long
	 * 2020年9月16日下午3:16:51
	 * 方法释义:
	 * 参数:
	 *
	 */
	List<MemberUserDO> likeList(Map<String, Object> map);

	/**
	 * @author long
	 * 2020年9月16日下午4:00:15
	 * 方法释义:
	 * 参数:
	 *
	 */
	int likeCount(Map<String, Object> params);

	/**
	 * @author long
	 * 2020年9月21日下午8:00:30
	 * 方法释义:
	 * 参数:
	 *
	 */
	List<Map<String, Object>> allUserEchartsByToday(Map<String, Object> params);

	/**
	 * @author long
	 * 2020年9月23日下午8:30:34
	 * 方法释义:
	 * 参数:
	 *
	 */
	List<Map<String, Object>> getOrderCensus(Map<String, Object> params);

	/**
	 * @author long
	 * 2020年9月23日下午8:30:40
	 * 方法释义:
	 * 参数:
	 *
	 */
	int getCountOrderCensus(Map<String, Object> params);


	List<MemberUserDO> getInfiniteUpUser(String userId);

    Map<String, Object> getTeamDetails(Map<String, Object> params);

	List<Map<String, Object>> getMoneyListByStatus(Map<String, Object> map);

	int getMoneyListByStatusCount(Map<String, Object> map);

	List<MemberUserDO> getInfiniteDownUser(String id);
}
